package framework.advs;


/**
 * Базовый класс для хранения объявлений
 */
public class BaseAdvertisment {
	// базовые поля
	private String id;
	private String header;
	private String body;
	private String phone1;
	private String phone2;
	private boolean isAgent;
	// новые поля
	private String agencyName;
	private Integer roomsNumber;
	private Integer price;
	private String creationDate;
	private Integer viewsNumber;

	/**
	 * Базовый конструктор
	 * @param id - id
	 * @param header - заголовок
	 * @param body - тело
	 * @param roomsNumber TODO
	 * @param price TODO
	 * @param phone1 - phone1
	 * @param phone2 - phone2
	 * @param isAgent - подал ли объявление агент
	 * @param agencyName TODO
	 * @param viewsNumber TODO
	 * @param creationDateTime TODO
	 */
	public BaseAdvertisment(String id, String header, String body,
			Integer roomsNumber, Integer price, String phone1, String phone2, boolean isAgent, String agencyName, Integer viewsNumber, String creationDateTime) {
		this.id = id;
		this.header = header;
		this.body = body;
		this.phone1 = phone1;
		this.phone2 = phone2;
		this.isAgent = isAgent;
		this.agencyName = agencyName;
		this.price = price;
		this.creationDate = creationDateTime;
		this.roomsNumber = roomsNumber;
		this.viewsNumber =viewsNumber; 
	}

	/**
	 * Возвращает значения полей
	 * @param i - порядковый номер
	 * @return значение поля
	 */
	public String getValue(int i){
		String s = "";
		switch (i) {
		case 1:	s = getId();break;
		case 2:	s=  getPrice().toString();break;
		case 3:	s=  getRoomsNumber().toString();break;
		case 4:	s=  getHeader();break;
		case 5:	s=  getBody();break;
		case 6:	s= getIsAgent();break;
		case 7:	s=  getAgencyName();break;
		case 8:	s= getPhone1();break;
		case 9:	s= getPhone2();break;
		case 10:	s= getCreationDate();break;
		case 11:	s= getViewsNumber().toString();break;
		default:
			break;
		}
		return s;
	}

	/**
	 * Возвращает названия полей
	 * @param i - порядковый номер
	 * @return название поля
	 */
	public String getFieldNames(int i) {
		String s = "";
		switch (i) {
		case 1:	s=  "id";break;
		case 2:	s=  "price";break;
		case 3:	s=  "roomsNumber";break;
		case 4:	s= "header";break;
		case 5:	s= "body";break;
		case 6:	s= "isAgent";break;
		case 7:	s= "agencyName";break;
		case 8:	s= "phone1";break;
		case 9:	s= "phone2";break;
		case 10:	s= "creationDateTime";break;
		case 11:	s= "viewsNumber";break;
		default:
			break;
		}
		return s;
	}
	/**
	 * Возвращает значение поля
	 * @return значение поля
	 */
	public String getId() {
		return id;
	}
	/**
	 * Устанавливает значение поля
	 * @param value -  значение
	 */
	public void setId(String value) {
		this.id = value;
	}
	/**
	 * Возвращает значение поля
	 * @return значение поля
	 */
	public String getHeader() {
		return header;
	}
	/**
	 * Устанавливает значение поля
	 * @param value -  значение
	 */
	public void setHeader(String value) {
		this.header = value;
	}
	/**
	 * Возвращает значение поля
	 * @return значение поля
	 */
	public String getBody() {
		return body;
	}
	/**
	 * Устанавливает значение поля
	 * @param value -  значение
	 */
	public void setBody(String value) {
		this.body = value;
	}
	/**
	 * Возвращает значение поля
	 * @return значение поля
	 */
	public String getPhone1() {
		return phone1;
	}
	/**
	 * Устанавливает значение поля
	 * @param value -  значение
	 */
	public void setPhone1(String value) {
		this.phone1 = value;
	}
	/**
	 * Возвращает значение поля
	 * @return значение поля
	 */
	public String getPhone2() {
		return phone2;
	}
	/**
	 * Устанавливает значение поля
	 * @param value -  значение
	 */
	public void setPhone2(String value) {
		this.phone2 = value;
	}
	/**
	 * Возвращает значение поля
	 * @return значение поля
	 */
	public String getIsAgent() {
		if (isAgent) {
			return "true";
		} else {
			return "false";
		}
	}
	/**
	 * Устанавливает значение поля
	 * @param value -  значение
	 */
	public void setAgent(boolean value) {
		this.isAgent = value;
	}
	/**
	 * Возвращает число полей класса
	 * @return число полей класса
	 */
	public int size() {
		return this.getClass().getDeclaredFields().length;
	}

	public String getAgencyName() {
		return agencyName;
	}

	public void setAgencyName(String agencyName) {
		this.agencyName = agencyName;
	}

	public Integer getRoomsNumber() {
		return roomsNumber;
	}

	public void setRooms(Integer roomsNumber) {
		this.roomsNumber = roomsNumber;
	}

	public Integer getPrice() {
		return price;
	}

	public void setPrice(Integer price) {
		this.price = price;
	}

	public String getCreationDate() {
		return creationDate;
	}

	public void setCreationDateTime(String creationDate) {
		this.creationDate = creationDate;
	}

	public Integer getViewsNumber() {
		return viewsNumber;
	}

	public void setViews(Integer viewsNumber) {
		this.viewsNumber = viewsNumber;
	}

}
